Provisioning a virtualized enterprise-grade system can be enormously complex. Although existing tools may partially automate the provisioning of a smaller system comprising a handful of virtual machines and software applications, they cannot handle complex enterprise-grade virtual environments that may comprise thousands of virtual machines, extensive virtual infrastructure and networks, distributed applications, multiple operating systems, and a requirement for tight integration with numerous points of management.
Provisioning a complex virtualized system often requires configuration decisions specific to the particular applications being provisioned; to the operating systems, resources, and platforms that underlie the virtualized system; to a location or site that will use the virtualized system; and to the industry, field, or business function of the business that will use the virtual system. Configuration decisions may be further influenced by extrinsic constraints, such as a requirement to comply with certain regulatory and security controls, to collect and store email communications, or to preserve evidence of regulatory compliance.
Existing software tools cannot, however, automatically provision a complex virtualized system. Where utility that partially automates a simple installation may use user input or environmental variables to automatically configure settings for a single-user operating system or software application, provisioning a complex enterprise system can require choosing among many possible combinations of runtime tasks, software components, and elements of communications infrastructure, often resulting in dramatically different implementations across an enterprise.
Furthermore, these choices may be functions of extrinsic factors that are not known until provisioning actually takes place, such as resource host names or dynamically allocated network addresses. Complex virtualized systems are therefore typically configured and provisioned by hand, using expert knowledge of a software team that is familiar with technical issues, resource limitations, business policies, and extrinsic constraints. Managing and tracking such complex installation efforts can require significant resources and, in many cases, results in unexpected costs, delays, and implementation errors.
There is thus a need for a technical solution to the technical problem (which is necessarily rooted in the technology of virtualized software systems) of automating the orchestration of a complex provisioning project as a function of both known characteristics of the entities to be provisioned and of factors that become known only at the time of the provisioning.